package com.hbnu.xiadongyu;

/*
题⽬4：排序接⼝实现
分别使⽤：
1. 传统类实现
2. 匿名内部类
3. Lambda表达式
实现冒泡排序功能。
 */
class experiment{
    public static void main(String[] args) {
        int[] array={2,4,3,5,7};
        //传统类
        Interface_sort sort=new Interface_sort();
        sort.sort(array);
        System.out.print("传统类实现：");
        for (int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
        System.out.println();

        //匿名内部类
        new Sorter(){
            public void sort(int[] array){
                for (int i = 0; i < array.length-1; i++) {
                    for(int j=0;j<array.length-i-1;j++)
                        if(array[j]>array[j+1]){
                        int temp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=temp;
                    }
                }
            }
        }.sort(array);
        System.out.print("匿名内部类：");
        for (int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
        System.out.println();
        //Lambda表达式
        Sorter sorter=(array1) -> {
            for (int i = 0; i < array1.length-1; i++) {
                for(int j=0;j<array1.length-i-1;j++)
                    if(array1[j]<array1[j+1]){
                        int temp=array1[j];
                        array1[j]=array1[j+1];
                        array1[j+1]=temp;
                    }
            }
        };
        sorter.sort(array);
        System.out.print("Lambda表达式：");
        for (int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
    }
}
@FunctionalInterface//接口用Lambda表达式要先声明只有一个函数
interface Sorter {
    void sort(int[] array);
}
public class Interface_sort implements Sorter {//传统类实现
    public void sort(int[] array){
        for (int i = 0; i < array.length-1; i++) {
            for(int j=0;j<array.length-i-1;j++)
                if(array[j]<array[j+1]){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
        }

    }
}

